package com.person.yhzs.user.mapper;


import com.person.yhzs.user.entity.User;
import com.person.yhzs.user.entity.dto.UserDto;
import com.person.yhzs.user.entity.vo.UserVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (User)表数据库访问层
 *
 * @author sxl
 * @since 2021-12-13 17:14:23
 */
@Mapper
public interface UserMapper {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    User queryById(@Param("account") Long id);

    /**
     * 检查账号(手机号)是否存在
     * @param account
     * @return
     */
    User checkUser(@Param("account") String account);

    /**
     * 修改用户信息
     * @param userDto
     * @return
     */
    Long updateUser(@Param("userDto") UserDto userDto);

    /**
     * 通过用户名密码查询用户
     * @param account
     * @param password
     * @return
     */
    User getUser(@Param("account") String account, @Param("password") String password);

    /**
     * @Description //添加用户
     * @Author luolin
     * @Date 2022/5/31 10:04
     * @param userDto
     * @return: java.lang.Long
     **/
    Long insertUser(@Param("userDto") UserDto userDto);

    /**
     * @Description 新增用户（灵活性强）
     * @Author luolin
     * @Date 2022/10/8 14:40
     **/
    Long insertUserAgile(@Param("userDto") UserDto userDto);

    /**
     * @Description 检查是否存在手机号
     * @Author luolin
     * @Date 2022/6/20 15:49
     **/
    Long checkPhone(@Param("phone") String phone);

    /**
     * @Description 检查是否存在身份证号
     * @Author luolin
     * @Date 2022/6/20 15:49
     **/
    Long checkIdCard(@Param("idCard") String idCard);

    /**
     * @Description 检查是否人员相同
     * @Author luolin
     * @Date 2022/6/20 15:49
     **/
    User checkUserInfoByUser(@Param("userDto") UserDto userDto);

    /**
     * @Description 查询人员数量
     * @Author luolin
     * @Date 2022/5/31 10:41
     **/
    Long getCount(@Param("userDto") UserDto userDto);

    User queryUserByPhone(@Param("phone") String phone);

    User queryUserById(@Param("userId") Long userId);

    /**
     * 分页模糊查询
     * @param pageIndex
     * @param pageSize
     * @param userDto
     * @return
     */
    List<User> getPage(@Param("pageIndex") Integer pageIndex, @Param("pageSize") Integer pageSize, @Param("userDto") UserDto userDto);

}

